#ifndef BAZINGA_COMPILER_AST_TYPEDEF_H
#define BAZINGA_COMPILER_AST_TYPEDEF_H

typedef enum LL_AST_TYPE{
// Lexer node type
    AST_ELSE,
    AST_IF,
    AST_INT,
    AST_RETURN,
    AST_VOID,
    AST_WHILE,
    AST_ARRAY,
    AST_EQ,
    AST_NEQ,
    AST_GTE,
    AST_LTE,
    AST_ADD,
    AST_SUB,
    AST_MUL,
    AST_DIV,
    AST_LT,
    AST_GT,
    AST_ASSIGN,
    AST_SEMICOLON,
    AST_COMMA,
    AST_LPARENTHESE,
    AST_RPARENTHESE,
    AST_LBRACKET,
    AST_RBRACKET,
    AST_LBRACE,
    AST_RBRACE,
    AST_ID,
    AST_COMMENT,
    AST_BLANK,
    AST_EOL,
    AST_CONTINUE,
    AST_BREAK,
    AST_POS,
    AST_NEG,
    AST_NOT,
    AST_MOD,
    AST_AND,
    AST_OR,
    AST_CONST,
    AST_IDENT,
    AST_INT_CONST,
// Parser node
    AST_program,
    AST_comp_unit,
    AST_decl,
    AST_const_decl,
    AST_const_defs,
    AST_const_def,
    AST_const_init_val,
    AST_const_exp,
    AST_const_init_vals,
    AST_var_decl,
    AST_var_def,
    AST_var_defs,
    AST_init_vals,
    AST_init_val,
    AST_func_def,
    AST_funcf_param,
    AST_funcf_params,
    AST_block,
    AST_block_item,
    AST_block_items,
    AST_stmt,
    AST_exp,
    AST_cond,
    AST_lval,
    AST_primary_exp,
    AST_number,
    AST_unary_exp,
    AST_unary_op,
    AST_assign_stmt,
    AST_if_stmt,
    AST_exp_stmt,
    AST_iter_stmt,
    AST_break_stmt,
    AST_continue_stmt,
    AST_return_stmt,
    AST_lval_addr,
    AST_func_call,
    AST_pointer,
    AST_func_rparams,
    AST_mulexp,
    AST_addexp,
    AST_relexp,
    AST_eqexp,
    AST_landexp,
    AST_lorexp,
    AST_const_pointer,
    AST_UNKNOWN,
    AST_EMPTY
} LL_AST_TYPE;

#endif //BAZINGA_COMPILER_AST_TYPEDEF_H
